/*
 * @(#)DefinitionCmpTypeHandler.java   09/09/13
 *
 * Copyright (C) 2009 Ecole des Mines d'Ales
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 * Contact: yulinz88@gmail.com
 *
 *
 *
 */



package fr.ema.arch3d.ADL.specification.componentType;

import fr.ema.arch3d.model.architecture.ComponentType;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;

import java.io.CharArrayWriter;

import java.util.ArrayList;
import java.util.List;

/**
 * Class description
 *
 *
 * @version        1.0, 09/09/13
 * @author         Huaxi (Yulin) ZHANG
 */
public class DefinitionCmpTypeHandler extends DefaultHandler {

    /** Field description */
    ComponentType ct = new ComponentType();

    /** Field description */
    List ct_list = new ArrayList();

    // Buffer for collecting data from
    // the "characters" SAX event.

    /** Field description */
    private CharArrayWriter contents = new CharArrayWriter();

    // Mapping delegates...

    /** Field description */
    DefinitionCmpTypeMapper defMapper;

    // XML Parser...

    /** Field description */
    XMLReader parser;

    // Constructor with XML Parser...

    /**
     * Constructs ...
     *
     *
     * @param parser
     * @param ct
     */
    DefinitionCmpTypeHandler(XMLReader parser, ComponentType ct) {
        this.parser = parser;
        this.ct     = ct;
    }

    // Override methods of the DefaultHandler class
    // to gain notification of SAX Events.
    //
    // See org.xml.sax.ContentHandler for all available events.
    //
    public void startElement(String namespaceURI, String localName, String qName, Attributes attr) throws SAXException {
        contents.reset();

        if (localName.equals("def-component-type")) {

            // System.out.println("start"+spec);
            defMapper = new DefinitionCmpTypeMapper(parser, this, ct);
        }

        /*
         * System.out.println("start"+localName);
         * if ( localName.equals( "component-type" ) ) {
         * System.out.println("start"+spec);
         *       ComponentType ctcurrent=new ComponentType();
         * ctMapper=new ComponentTypeMapper( parser, this, ctcurrent);
         * System.out.println("hhhhhhhhhhh"+ctcurrent);
         * spec.ct_list.add(ctcurrent) ;
         * }
         */
    }

    public void characters(char[] ch, int start, int length) throws SAXException {

        // accumulate the contents into a buffer.
        contents.write(ch, start, length);
    }
}
